作者:果博东方手机版 | 来源:互联网 | 2023-07-30 13:58
篇首语:本文由编程笔记#小编为大家整理,主要介绍了SpringBoot的JMS发送和接收队列消息,基于ActiveMQ相关的知识,希望对你有一定的参考价值。消息队列Ac
篇首语:本文由编程笔记#小编为大家整理,主要介绍了Spring Boot的JMS发送和接收队列消息,基于ActiveMQ相关的知识,希望对你有一定的参考价值。
消息队列ActiveMQ是JMS的一种实现,ActiveMQ可以单独作为一个消息队列组件即插即拔,即插即用,参考下面两篇文章:
分布式MQTT消息订阅-发布框架:高可用性ActiveMQ_Zhang Phil-CSDN博客_mqtt分布式架构分布式MQTT消息订阅-发布框架:高可用性ActiveMQActiveMQ是MQTT的一种实现。ActiveMQ基于JMS。ActiveMQ开发包下载地址:http://activemq.apache.org/download.htmlActiveMQ最适合做消息推送。国内很多厂商基于ActiveMQ改造出多种消息推送平台。下载完成ActiveMQ压缩包后解压,解压后直接在Java环境中运...https://zhangphil.blog.csdn.net/article/details/94759508
ActiveMQ安装配置和使用简例_Zhang Phil-CSDN博客本文作者:Zhang Phil原文链接:ActiveMQ安装配置和使用简例ActiveMQ是一套JMS(Java Message Service)开源消息服务实现的组件。以Windows操作系统为例,本文简述了ActiveMQ的安装配置和使用简例。消息服务是互联网应用的最基本功能,只要是互联网应用,就少不了消息通信。而ActiveMQ是一个相对比较成熟稳定的JMS消息服务组件,https://blog.csdn.net/zhangphil/article/details/48173665
以上是把ActiveMQ作为单独的组件(系统子模块)拆分出来加载使用。
在Spring boot里面,ActiveMQ作为JMS的实现,Spring boot内嵌、可直接使用。
定义一个POJO的消息类:
public class SimpleMsg
private String to;
private String body;
public SimpleMsg()
public SimpleMsg(String to, String body)
this.to = to;
this.body = body;
public String getTo()
return to;
public void setTo(String to)
this.to = to;
public String getBody()
return body;
public void setBody(String body)
this.body = body;
@Override
public String toString()
return "SimpleMsg" +
"to='" + to + '\\'' +
", body='" + body + '\\'' +
'';
SimpleMsg将作为spring boot程序中消息的实体传输。
定义一个spring boot的消息接收器:
import org.springframework.jms.annotation.JmsListener;
import org.springframework.stereotype.Component;
@Component
public class MsgReceiver
//destination的值和在application里面发送制定的目的地值需要相同才能收到
//containerFactory的变量名对应在app里面定义的JmsListenerContainerFactory
@JmsListener(destination = "@zhangphil", containerFactory = "myAppContainerFactory")
public void receiveMessage(SimpleMsg msg)
System.out.println("收到消息->");
System.out.println(msg);
System.out.println("收到消息<-");
完成spring boot的应用application&#xff1a;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jms.DefaultJmsListenerContainerFactoryConfigurer;
import org.springframework.context.ConfigurableApplicationContext;
import org.springframework.context.annotation.Bean;
import org.springframework.jms.annotation.EnableJms;
import org.springframework.jms.config.DefaultJmsListenerContainerFactory;
import org.springframework.jms.config.JmsListenerContainerFactory;
import javax.jms.ConnectionFactory;
import org.springframework.jms.core.JmsTemplate;
import org.springframework.jms.support.converter.MappingJackson2MessageConverter;
import org.springframework.jms.support.converter.MessageConverter;
import org.springframework.jms.support.converter.MessageType;
&#64;SpringBootApplication
&#64;EnableJms
public class SpringJmsApplication
&#64;Bean
public JmsListenerContainerFactory> myAppContainerFactory(ConnectionFactory connectionFactory,
DefaultJmsListenerContainerFactoryConfigurer configurer)
DefaultJmsListenerContainerFactory factory &#61; new DefaultJmsListenerContainerFactory();
configurer.configure(factory, connectionFactory);
return factory;
&#64;Bean
public MessageConverter jmsMessageConverter()
MappingJackson2MessageConverter converter &#61; new MappingJackson2MessageConverter();
converter.setTargetType(MessageType.TEXT);
converter.setTypeIdPropertyName("_type");
return converter;
public static void main(String[] args)
ConfigurableApplicationContext context &#61; SpringApplication.run(SpringJmsApplication.class, args);
JmsTemplate jmsTemplate &#61; context.getBean(JmsTemplate.class);
SimpleMsg msg &#61; new SimpleMsg("zhangfly", "Hello,world!");
System.out.println("发送消息:" &#43; msg);
jmsTemplate.convertAndSend("&#64;zhangphil", msg);
System.out.println("发送结束");
以上完成后&#xff0c;运行SpringJmsApplication&#xff0c;如果成功&#xff0c;控制台输出&#xff1a;
发送消息:SimpleMsgto&#61;&#39;zhangfly&#39;, body&#61;&#39;Hello,world!&#39;
发送结束
收到消息->
SimpleMsgto&#61;&#39;zhangfly&#39;, body&#61;&#39;Hello,world!&#39;
收到消息<-